// const db=wx.cloud.database();
// const app = getApp()
// // pages/add2/add2.js
// Page({

//   /**
//    * 页面的初始数据
//    */
//   data: {
//     riqi:"",
//     list:[],
//     medicineList: [],
//     //selectedMedicine: "", // 存储选中的药品
//     selectedMedicine: null, // 改为对象形式存储
//     selectedTime: "",    // 选中的时间
//   },
//    // 时间选择回调
//    handleTimeChange(e) {
//     this.setData({
//       selectedTime: e.detail.value,
//     });
//   },
//  // 选择药品后的回调
//  handleMedicineChange(e) {
//   this.setData({
//     selectedMedicine: this.data.medicineList[e.detail.value],
//     //selectedMedicine: this.data.medicineList[index],
//   });
// },


// //提交药品清单
// up(){
//   if (!this.data.selectedMedicine || !this.data.selectedTime) {
//     wx.showToast({
//       title: '请完整填写药品信息',
//       icon: 'none'
//     });
//     return;
//   }

//   const dailyname = this.data.selectedMedicine.name;
//     const dailysingle = this.data.selectedMedicine.singlenum;
//     const time = this.data.selectedTime;
//     const eat="未服用"
//   wx.showLoading({
//     title: '添加中...',
//     mask:true
//   });
//   wx.cloud.callFunction({
//     name:"Daily",
//     data:{
//       dailyname,
//       dailysingle,
//       time,
//       eat,
//       account:app.globalData.account
//     },success: (res) => {
//       wx.hideLoading();
//       if (res.result.success) {
//         wx.showToast({
//           title: '添加成功',
//           icon: 'success'
//         });
//          // 提交成功后重置表单
//          this.resetForm();
         
//          console.log(time);
//          // 获取当前日期（格式: YYYY-MM-DD）
// const today = new Date();
// const year = today.getFullYear();
// const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份补零
// const day = String(today.getDate()).padStart(2, '0');       // 日期补零
// const currentDate = `${year}-${month}-${day}`;
// // 组合成完整时间字符串 "YYYY-MM-DD HH:mm:ss"
// const fullTime = `${currentDate} ${time}:00`; // 补上秒数 ":00"
// this.setData({
//   riqi:fullTime
// })
// //console.log(this.data.riqi); // 输出: "2025-06-04 00:02:00"（假设当天是2025-06-04）
// this.sendOpenCommand();
//       } else {
//         wx.showToast({
//           title: res.result.message || '添加失败',
//           icon: 'none'
//         });
//       }
//     },
//     fail: (err) => {
//       wx.hideLoading();
//       wx.showToast({
//         title: '网络错误，请重试',
//         icon: 'none'
//       });
//       console.error('云函数调用失败:', err);
//     }
//   });
// },
//  // 重置表单
//  resetForm() {
//   this.setData({
//     selectedMedicine: null,
//     selectedTime: ""
//   });
// },
// /**
//      * 获取token按钮按下：
//      */
//     gettoken(){
//       // console.log("开始获取。。。");//打印完整消息
//       var that=this;  //这个很重要，在下面的回调函数中由于异步问题不能有效修改变量，需要用that获取
//       wx.request({
//         url: 'https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens',
//         data: {
//           "auth": {
//             "identity": {
//               "methods": [
//                 "password"
//               ],
//               "password": {
//                 "user": {
//                   "domain": {
//                     "name": "GT-2301_81266702"
//                   },
//                   "name": "GT-2301_81266702",
//                   "password": "Lmcindy6388"
//                 }
//               }
//             },
//             "scope": {
//               "project": {
//                 "name": "cn-east-3"
//               }
//             }
//           }
//         },
//         method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
//         header: {'content-type': 'application/json' }, // 请求的 header 
//         success: function(res){// success
//           // success
//             console.log("获取token成功");//打印完整消息
//             //console.log(res);//打印完整消息
//             var token='';
// token=JSON.stringify(res.header['X-Subject-Token']);//解析消息头token
// token=token.replaceAll("\"", "");
// //console.log("获取token=\n"+token);//打印token
// wx.setStorageSync('token',token);//把token写到缓存中,以便可以随时随地调用
//         },
//         fail:function(){
//             // fail
//             console.log("获取token失败");//打印完整消息
//         },
//         complete: function() {
//             // complete
//             console.log("获取token完成");//打印完整消息
//         } 
//     });
//     },
// // 发送用药时间命令
// sendOpenCommand() {
//   console.log("开始下发命令...");
//   const that = this;
//   const token = wx.getStorageSync('token');

//   wx.request({
//     url: 'https://92aad16b61.st1.iotda-app.cn-east-3.myhuaweicloud.com:443/v5/iot/72dbf1784ff04685985c53fba5220913/devices/6810ab2d3878983101479033_smart_pill_box_lm/commands',
//     data: {
//       "service_id": "get_data",
//       "command_name": "set_time",
//       "paras": {
//         "time":  this.data.riqi
//       }
    
//     },
//     method: 'POST',
//     header: {
//       'content-type': 'application/json',
//       'X-Auth-Token': token
//     },
//     success: function(res) {
//       console.log("下发命令成功");
//       //console.log(res);
//        // 关键修复：检查状态码
//        if (res.statusCode !== 200) {
//         console.error("命令下发失败，状态码:", res.statusCode);
//         that.setData({ checked: false });
//         //wx.showToast({ title: '失败:设备可能离线', icon: 'none' });
//         return; // 终止后续逻辑
//       }
     
//         // 只有真正成功时才执行以下逻辑
//         // console.log("下发命令成功");
//         // wx.showToast({ title: '柜门已打开', icon: 'success' });

        
//     //   // 3秒后自动复位开关（不发送关柜命令）
//     //   setTimeout(() => {
//     //     that.setData({ checked: false });
//     //   }, 3000);
//     },
//     fail: function(err) {
//       console.log("命令下发失败");
//       console.log("请先获取token");
//       that.setData({ checked: false }); // 失败时也复位
//       wx.showToast({ title: '失败', icon: 'none' });
//     },
//     complete: function() {
//       console.log("命令下发完成");
//       that.setData({ result: '设备命令下发完成' });
//     }
//   });
// },
//   /**
//    * 生命周期函数--监听页面加载
//    */
//   onLoad(options) {
//     this.gettoken();
//     // this.get();
//     // db.collection("medicine").watch({
//     //   onChange:res=>{
//     //     this.get();
//     //   },
//     //   onError:err=>{
//     //     console.log(err);
//     //   }
//     // })
//     this.getMedicineList();
//     db.collection("medicine").watch({
//       onChange: res => {
//         this.getMedicineList();
//       },
//       onError: err => {
//         console.log(err);
//       }
//     })
//   },
// // 获取药品列表
// getMedicineList() {
//   wx.cloud.callFunction({
//     name: "information"
//   }).then(res => {
//     console.log(res.result.data);
//     this.setData({
//       medicineList: res.result.data,
//     });
//   }).catch(err => {
//     console.error("获取药品列表失败:", err);
//   });
// },
//   // get(){
//   //   wx.cloud.callFunction({
//   //     name:"information"
//   //   }).then(res=>{
//   //     console.log(res.result.data);
//   //     console.log(res.result.data.name);
//   //     this.setData({
//   //       list:res.result.data,
//   //       //medicineList:res.result.data.name
//   //     })
//   //   })
//   // },



//   /**
//    * 生命周期函数--监听页面初次渲染完成
//    */
//   onReady() {

//   },

//   /**
//    * 生命周期函数--监听页面显示
//    */
//   onShow() {
//     //this.get();
//   },

//   /**
//    * 生命周期函数--监听页面隐藏
//    */
//   onHide() {

//   },

//   /**
//    * 生命周期函数--监听页面卸载
//    */
//   onUnload() {
//  // 页面卸载时关闭监听
//  if (this.watcher) {
//   this.watcher.close();
// }
//   },

//   /**
//    * 页面相关事件处理函数--监听用户下拉动作
//    */
//   onPullDownRefresh() {

//   },

//   /**
//    * 页面上拉触底事件的处理函数
//    */
//   onReachBottom() {

//   },

//   /**
//    * 用户点击右上角分享
//    */
//   onShareAppMessage() {

//   }
// })

const db = wx.cloud.database();
const app = getApp()

Page({
  data: {
    medicineList: [],
    selectedMedicine: null,
    selectedTime1: "",
    selectedTime2: "",
    selectedTime3: "",
  },

  // 时间选择回调
  handleTimeChange1(e) {
    this.setData({
      selectedTime1: e.detail.value,
    });
  },
  handleTimeChange2(e) {
    this.setData({
      selectedTime2: e.detail.value,
    });
  },
  handleTimeChange3(e) {
    this.setData({
      selectedTime3: e.detail.value,
    });
  },

  // 选择药品后的回调
  handleMedicineChange(e) {
    this.setData({
      selectedMedicine: this.data.medicineList[e.detail.value],
    });
  },

  // 提交药品清单
  up() {
    if (!this.data.selectedMedicine || !this.data.selectedTime1) {
      wx.showToast({
        title: '至少需要填写药品和第一个用药时间',
        icon: 'none'
      });
      return;
    }

    const times = [
      this.data.selectedTime1,
      this.data.selectedTime2,
      this.data.selectedTime3
    ].filter(time => time); // 过滤掉空的时间

    if (times.length === 0) {
      wx.showToast({
        title: '请至少设置一个用药时间',
        icon: 'none'
      });
      return;
    }

    wx.showLoading({
      title: '添加中...',
      mask: true
    });

    // 逐个添加每个用药时间
    const promises = times.map(time => {
      return this.addMedication(time);
    });

    Promise.all(promises)
      .then(results => {
        wx.hideLoading();
        const successCount = results.filter(r => r.success).length;
        if (successCount === times.length) {
          wx.showToast({
            title: `成功添加${successCount}条记录`,
            icon: 'success'
          });
        } else {
          wx.showToast({
            title: `成功${successCount}条，失败${times.length - successCount}条`,
            icon: 'none'
          });
        }
        this.resetForm();
      })
      .catch(err => {
        wx.hideLoading();
        wx.showToast({
          title: '添加出错',
          icon: 'none'
        });
        console.error('添加出错:', err);
      });
  },

  // 添加单条用药记录
  addMedication(time) {
    return new Promise((resolve, reject) => {
      const dailyname = this.data.selectedMedicine.name;
      const dailysingle = this.data.selectedMedicine.singlenum;
      const eat = "未服用";

      // 获取当前日期
      const today = new Date();
      const year = today.getFullYear();
      const month = String(today.getMonth() + 1).padStart(2, '0');
      const day = String(today.getDate()).padStart(2, '0');
      const currentDate = `${year}-${month}-${day}`;
      const fullTime = `${currentDate} ${time}:00`;

      wx.cloud.callFunction({
        name: "Daily",
        data: {
          dailyname,
          dailysingle,
          time,
          eat,
          account: app.globalData.account
        },
        success: (res) => {
          if (res.result.success) {
            this.sendOpenCommand(fullTime);
            resolve({ success: true });
          } else {
            resolve({ success: false, message: res.result.message });
          }
        },
        fail: (err) => {
          reject(err);
        }
      });
    });
  },

  // 重置表单
  resetForm() {
    this.setData({
      selectedMedicine: null,
      selectedTime1: "",
      selectedTime2: "",
      selectedTime3: ""
    });
  },

  // 获取token
  gettoken() {
    var that = this;
    wx.request({
      url: 'https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens',
      data: {
        "auth": {
          "identity": {
            "methods": ["password"],
            "password": {
              "user": {
                "domain": { "name": "GT-2301_81266702" },
                "name": "GT-2301_81266702",
                "password": "Lmcindy6388"
              }
            }
          },
          "scope": {
            "project": { "name": "cn-east-3" }
          }
        }
      },
      method: 'POST',
      header: { 'content-type': 'application/json' },
      success: function(res) {
        var token = JSON.stringify(res.header['X-Subject-Token']);
        token = token.replaceAll("\"", "");
        wx.setStorageSync('token', token);
      }
    });
  },

  // 发送用药时间命令
  sendOpenCommand(fullTime) {
    const token = wx.getStorageSync('token');

    wx.request({
      url: 'https://92aad16b61.st1.iotda-app.cn-east-3.myhuaweicloud.com:443/v5/iot/72dbf1784ff04685985c53fba5220913/devices/6810ab2d3878983101479033_smart_pill_box_lm/commands',
      data: {
        "service_id": "get_data",
        "command_name": "set_time",
        "paras": { "time": fullTime }
      },
      method: 'POST',
      header: {
        'content-type': 'application/json',
        'X-Auth-Token': token
      },
      success: function(res) {
        if (res.statusCode !== 200) {
          console.error("命令下发失败，状态码:", res.statusCode);
          return;
        }
        console.log("命令下发成功");
      },
      fail: function(err) {
        console.log("命令下发失败");
      }
    });
  },

  // 生命周期函数
  onLoad(options) {
    this.gettoken();
    this.getMedicineList();
    db.collection("medicine").watch({
      onChange: res => {
        this.getMedicineList();
      },
      onError: err => {
        console.log(err);
      }
    })
  },

  // 获取药品列表
  getMedicineList() {
    wx.cloud.callFunction({
      name: "information"
    }).then(res => {
      this.setData({
        medicineList: res.result.data,
      });
    }).catch(err => {
      console.error("获取药品列表失败:", err);
    });
  },

  onUnload() {
    if (this.watcher) {
      this.watcher.close();
    }
  }
});